/*
 前置路由钩子函数：
    to ：即将要进入的目标路由对象
    from ：当前导航正要离开的路由对象
    next : 调用该方法，进入目标路由

    路由校验思路：
        1.判断该路由是否需要守卫：
            1.1 不需要：可以进入 next()
            1.2 需要：判断是否有token(判断是否有听课证)
                1.2.1 没有：跳回登录页
                1.2.3 有：判断是否正确和是否过期
                    1.2.3.1 token验证通过：next()
                    1.2.3.2 token验证不通过:跳回登录页 (token是错的；过期；又是错的又是过期的)
*/
import router from "./router";
import { getToken } from "./utils/auth";
import usersApi from "./api/usersApi";

router.beforeEach((to, from, next) => {
  console.log(to, 999);
  //   console.log(from, 888);
  //   if (to.path == "/reg") {
  //     next();
  //   }
  if (to.meta.ischeck != false) {
    //需要守卫(鉴权/权限校验)
    //判断是否有token
    let token = getToken();
    console.log(token, 789);
    if (token) {
      //有
      usersApi.checkToken(token).then((res) => {
        console.log(res, 999);
        if (res.data.flag) {
          //检验通过
          next();
        } else {
          //校验不通过：跳转登录页重新登录
          router.push("/login");
        }
      });
    } else {
      //没有：跳回登录页
      router.push("/login");
    }
  } else {
    //不需要守卫
    next();
  }
});
